﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ForrajeriaDB;
using ForrajeriaBCL;
using System.Data;
namespace ForrajeriaFRONT
{
    public partial class PedidoClienteAdmin : System.Web.UI.Page
    {
        static int ind;
        PedidoClienteBCL pedidoClienteBLC = new PedidoClienteBCL();
        ForrajeBCL forrajeBC = new ForrajeBCL();
        protected void Page_Load(object sender, EventArgs e)
        {
            GridDetalle.Visible = false;

            if (Context.User.IsInRole("STOCK"))
            {
                ddlEstado.Enabled = false;
                ddlEstado.Visible = false;
                Button1.Visible = false;
            }
            if (Context.User.IsInRole("ADMIN"))
            {
                ddlEstado.Enabled = true;
                ddlEstado.Visible = true;
                Button1.Visible = true;
            }
            lblMensaje.Visible = false;
            Label1.Visible = false;
            btnAutorizar.Visible = false;
            btnDarDeBaja.Visible = false;
            if (!Page.IsPostBack)
            {
                cargarGrilla("A");
            }
        }
        public void cargarGrilla(string estado)
        {
            List<PedidoClienteMO> pedidoClienteMO = pedidoClienteBLC.getByCliente(0, estado);

            GridPedido.DataSource = pedidoClienteMO;
            GridPedido.DataBind();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            switch (ddlEstado.SelectedValue)
            {
                case "1":
                    cargarGrilla("A");
                    
                    break;
                case "2":
                    cargarGrilla("B");
                    break;
                case "3":
                    cargarGrilla("C");
                    break;
                case "4":
                    cargarGrilla("D");
                    break;
                case "5":
                    cargarGrilla("E");
                    break;

            }
            GridPedido.SelectedIndex = -1;
        }

        protected void gridDatos_SelectedIndexChanged1(object sender, EventArgs e)
        {

        }
        protected void gridDatos_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        protected void gridDatos_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {
            ind = e.NewSelectedIndex;
            if (ind != -1)
            {


                DataTable dt = pedidoClienteBLC.obtenerDetalle(int.Parse(GridPedido.Rows[ind].Cells[1].Text));
                string[] keys = new string[1];
                keys[0] = "codigoForraje";


                GridDetalle.DataKeyNames = keys;
                GridDetalle.DataSource = dt;
                GridDetalle.DataBind();
                GridDetalle.Visible = true;
                btnAutorizar.Visible = true;
                btnDarDeBaja.Visible = true;
            }
        }



        protected void btnAutorizar_Click(object sender, EventArgs e)
        {

            PedidoClienteMO pedidoClienteMONuevo = new PedidoClienteMO();
            PedidoClienteMO pedidoClienteMOViejo = new PedidoClienteMO();

            pedidoClienteMONuevo.Id_cliente = int.Parse(GridPedido.Rows[ind].Cells[0].Text);
            pedidoClienteMONuevo.NroPedido = int.Parse(GridPedido.Rows[ind].Cells[1].Text);
            pedidoClienteMONuevo.FechaPedido = DateTime.Parse(GridPedido.Rows[ind].Cells[2].Text);
            pedidoClienteMONuevo.FechaAuto = DateTime.Today;
            pedidoClienteMONuevo.FechaDeseada = DateTime.Parse(GridPedido.Rows[ind].Cells[4].Text);
            pedidoClienteMONuevo.TotalPedido = double.Parse(GridPedido.Rows[ind].Cells[5].Text);
            pedidoClienteMONuevo.EstadoPedido = "B";

            pedidoClienteMOViejo.Id_cliente = int.Parse(GridPedido.Rows[ind].Cells[0].Text);
            pedidoClienteMOViejo.NroPedido = int.Parse(GridPedido.Rows[ind].Cells[1].Text);
            pedidoClienteMOViejo.FechaPedido = DateTime.Parse(GridPedido.Rows[ind].Cells[2].Text);
            pedidoClienteMOViejo.FechaAuto = DateTime.Today;
            pedidoClienteMOViejo.FechaDeseada = DateTime.Parse(GridPedido.Rows[ind].Cells[4].Text);
            pedidoClienteMOViejo.TotalPedido = double.Parse(GridPedido.Rows[ind].Cells[5].Text);
            pedidoClienteMOViejo.EstadoPedido = GridPedido.Rows[ind].Cells[6].Text;


            List<ForrajeMO> listForrajeMO = new List<ForrajeMO>();

            for (int i = 0; i < GridDetalle.Rows.Count; i++)
            {
                ForrajeMO forrajeMO = new ForrajeMO();
                listForrajeMO.Add(forrajeMO);
            }
            int asd = 0;

            List<ForrajeMO> copia = new List<ForrajeMO>(listForrajeMO);
            //= listForrajeMO;

            foreach (ForrajeMO aux in copia)
            {
                aux.CodigoForraje = int.Parse(GridDetalle.DataKeys[asd].Value.ToString());
                //List<ForrajeMO> listForrajeCompleto = listForrajeMO;

                listForrajeMO[asd] = forrajeBC.getById(aux.CodigoForraje);

                if (listForrajeMO[asd].StockActual >= double.Parse(GridDetalle.Rows[asd].Cells[4].Text.ToString()))
                {
                    listForrajeMO[asd].StockActual = listForrajeMO[asd].StockActual - double.Parse(GridDetalle.Rows[asd].Cells[4].Text);

                }
                else
                {
                    lblMensaje.ForeColor = System.Drawing.Color.Red;
            
                    lblMensaje.Text = "No hay suficiente Stock";
                    break;
                }
                asd++;

            }
            forrajeBC.modificarStock(listForrajeMO);
            lblMensaje.Text = pedidoClienteBLC.Actualizar(pedidoClienteMONuevo, pedidoClienteMOViejo);
            lblMensaje.ForeColor = System.Drawing.Color.Blue;
            cargarGrilla("A");
            GridDetalle.DataSource = null;
            GridDetalle.DataBind();
            CleanControl(Controls);
            //Leer el StockActual, modificarlo y grabar....


        }

        protected void btnDarDeBaja_Click(object sender, EventArgs e)
        {


            PedidoClienteMO pedidoClienteMONuevo = new PedidoClienteMO();
            PedidoClienteMO pedidoClienteMOViejo = new PedidoClienteMO();

            pedidoClienteMONuevo.Id_cliente = int.Parse(GridPedido.Rows[ind].Cells[0].Text);
            pedidoClienteMONuevo.NroPedido = int.Parse(GridPedido.Rows[ind].Cells[1].Text);
            pedidoClienteMONuevo.FechaPedido = DateTime.Parse(GridPedido.Rows[ind].Cells[2].Text);
            pedidoClienteMONuevo.FechaAuto = DateTime.Today;
            pedidoClienteMONuevo.FechaDeseada = DateTime.Parse(GridPedido.Rows[ind].Cells[4].Text);
            pedidoClienteMONuevo.TotalPedido = double.Parse(GridPedido.Rows[ind].Cells[5].Text);
            pedidoClienteMONuevo.EstadoPedido = "D";

            pedidoClienteMOViejo.Id_cliente = int.Parse(GridPedido.Rows[ind].Cells[0].Text);
            pedidoClienteMOViejo.NroPedido = int.Parse(GridPedido.Rows[ind].Cells[1].Text);
            pedidoClienteMOViejo.FechaPedido = DateTime.Parse(GridPedido.Rows[ind].Cells[2].Text);
            pedidoClienteMOViejo.FechaAuto = DateTime.Today;
            pedidoClienteMOViejo.FechaDeseada = DateTime.Parse(GridPedido.Rows[ind].Cells[4].Text);
            pedidoClienteMOViejo.TotalPedido = double.Parse(GridPedido.Rows[ind].Cells[5].Text);
            pedidoClienteMOViejo.EstadoPedido = GridPedido.Rows[ind].Cells[6].Text;




            lblMensaje.Text = pedidoClienteBLC.Actualizar(pedidoClienteMONuevo, pedidoClienteMOViejo);
            
            cargarGrilla("A");
            GridDetalle.DataSource = null;
            GridDetalle.DataBind();
            CleanControl(Controls);
            //Leer el StockActual, modificarlo y grabar....


        }
        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())
                    CleanControl(control.Controls);
            }
        }

    }
}